package org.hzz.promotions.domain.repository;

import io.gitee.pkmer.convention.page.PageResponse;
import io.gitee.pkmer.convention.page.query.PageQuery;
import org.hzz.promotions.domain.entity.CouponEntity;

import java.util.List;
import java.util.Optional;

/**
 * @author <a href="mailto:1193094618@qq.com">pkmer</a>
 * <br>
 * <a href = "https://gitee.com/pkmer/sonatype-central-publisher">Code Repository</a>
 * At 2024/8/29
 */
public interface CouponRepository {

    /**
     * 插入Coupon对象
     */
    void insertCoupon(CouponEntity coupon);

    /**
     * 更新优惠券
     * @param coupon 优惠券
     */
    void updateCoupon(CouponEntity coupon);

    /**
     * 批量更新优惠券
     * @param entities 优惠券实体
     */
    void batchUpdateCouponEntity(List<CouponEntity> entities);

    /**
     * 分页查询Coupon对象
     */
    PageResponse<CouponEntity> pageQueryCoupon(PageQuery pageQuery);

    /**
     * 根据Id获取优惠券
     * @param id 优惠券Id
     * @return 优惠券实体
     */
    Optional<CouponEntity> getCouponById(Long id);

    /**
     * 删除优惠券
     * @param id 优惠券id
     */
    void deleteCoupon(Long id);


    /**
     * 增加优惠券的发放数量
     * @param id 优惠券id
     * @param num 领取的数量
     */
    int incrementIssueNum(long id,int num);


    List<CouponEntity> getCouponByIds(List<Long> ids);

}

